package main

import "fmt"

func main01() {
	// 初始化数组的几种方式
	initArr()

	forArr()

	var arr [3]int
	fmt.Println(arr)
	arr[0] = 1
	arr[1] = 2
	arr[2] = 3
	fmt.Println(arr)

	fmt.Println("=====")

	testSlice()
}

func testSlice() {
	//方式一
	arr := [...]int{1, 2, 3, 4, 5}
	fmt.Println("数组：", arr)
	slice := arr[1:3]
	fmt.Println("切片：", slice)
	fmt.Println("切片的元素个数：", len(slice))
	fmt.Println("切片的容量：", cap(slice))

	//方式二
	var slice2 = make([]float64, 2)
	fmt.Println("切片2：", slice2)
	fmt.Println("切片的元素个数2：", len(slice2))
	fmt.Println("切片的容量2：", cap(slice2))
	slice2[0] = 0.1

	//方式三
	var slice3 []string = []string{"hello", "go", "gogo"}
	fmt.Println("切片3：", slice3)           // [hello go gogo]
	fmt.Println("切片的元素个数3：", len(slice3)) //3
	fmt.Println("切片的容量3：", cap(slice3))   //3

	slice3 = append(slice3, "add")
	slice3 = append(slice3, "add2")
	fmt.Println(slice3)
	fmt.Println("切片的容量3：", cap(slice3))

	hello := "hello"
	slice4 := hello[1:3]
	fmt.Println(slice4)

}

func initArr() {
	var arr1 [3]int = [3]int{1, 2, 3}
	fmt.Println(arr1)

	var arr2 = [3]int{1, 2, 3}
	fmt.Println(arr2)

	var arr3 = [...]int{1, 2, 3}
	fmt.Println(arr3)

	var arr4 = [...]int{1: 2, 0: 1, 2: 3}
	fmt.Println(arr4)

	arr5 := [...]int{1, 2, 3}
	fmt.Println(arr5)
}

// 遍历数组
func forArr() {

	//范式一
	arr1 := [3]int{1, 2, 3}
	for i := 0; i < len(arr1); i++ {
		fmt.Println(arr1[i])
	}

	//方式二
	for index, value := range arr1 {
		fmt.Println("index=", index, ";value=", value)
	}
}
